This invention relates generally to a system and method for animating a computer image on a computer display and in particular to a system and method for generating realistic three-dimensional animation of an object over a low bandwidth communications network.
There are many different techniques for generating an animation of a three dimensional object on a computer display. Originally, the animated figures looked very much like stick figures or block figures since the animation was not very good. In particular, the user would see a block representing the arm move relative to a block representing the forearm. The problem was that there was no skin covering the blocks so that the figure looked unrealistic and not very life-like. More recently, the figures for animation have improved so that a skin may cover the bones of the figure to provide a more realistic animated figure.
Some techniques and systems, such as those used to generate three dimensional animation for a movie, are very high-end and expensive. In addition, these high-end three dimensional animations may be viewed by a consumer on a movie screen, for example, but cannot be interacted with in any way. In particular, the consumer may view the three dimensional animations which tell a story such as in a movie but the consumer cannot interact with the animations in any manner. These high-end animation systems are very useful for a movie, but cannot be readily used by the general public due to the costs of the system.
Other animation systems, such as dedicated game playing systems or personal computers executing a software application, permit the user to interact with the animations. These systems, however, require a large amount of memory for storing the animation data and a fairly state-of-the-art processor or graphics coprocessor in order to produce realistic three dimensional animation. The problem with a dedicated game playing system is that it cannot be used for other computing related tasks and therefore are relatively expensive due to the limited functions that they perform. The problem with most personal computers is that the personal computer is not optimized to produce the animations and therefore usually requires an expensive graphics co-processor and a sound board. In the above conventional animation systems, the user may interact with the animation during the game play, but the entire game with the graphics and animation are stored on a cartridge or on a hard disk or CD of the personal computer.
Recently, a number of animation systems have been introduced which harness the Internet or the World Wide Web (the Web) to communicate the animation data to the user. In particular, the user may use a personal computer which is executing a browser software application. The user may direct the browser application to a particular uniform resource locator (URL) of a web site which then may download the animation data from the web site. The problem is that the web site typically downloads the entire animation data so that the amount of animation data downloaded is large. An example of this type of animation system uses the virtual reality markup language (VRML) protocol. For a user with a slow communications link, such as the Internet or the Web and a modem, the large amount of animation data leads to a very slow download. The slow downloading time in turn leads to the consumer waiting a long period of time before viewing the animation. This long period of waiting before the animation is not acceptable since people become bored during the waiting period, cancel the animation and thus never see the animation displayed. It is desirable, however, to provide a three dimensional animation system in which the animation data which may be downloaded rapidly over a very slow communications link and it is to this end that the present invention is directed.
The invention provides a three dimensional animation system and method in which the animation data may be downloaded over a relatively slow communications link, such as the Internet or Web and a modem, to a local computer in a relatively short amount of time. The local computer may then execute a downloaded software application to animate the object. The user of the local computer may interact with the animated object (i.e., change its behaviors or actions). In a preferred embodiment, the main portion of the system may reside as a plurality of software applications on a web server and a client computer may access the web server to download the animations. To accomplish the shorter download time, the system may generate an initial animation download package containing the data about the actual object (e.g., the persistent data) and a few basic actions of the object (e.g., behavior data). For example, each downloaded object may have an idle behavior associated with it which is executed any time that the object is not executed another behavior. Then, as additional actions or behaviors or sound tracks for the object are required, the system may stream the behavior data down to the client computer before the action is required so that the behaviors are asynchronously downloaded (i.e., the behaviors for the three dimensional animated object do not need to be downloaded at the same time as the three dimensional animated object is downloaded). In this manner, the client computer may more quickly begin the animation while other yet unneeded actions or behaviors are being downloaded. For example, as the animated object moves through a landscape, the object may cross a bounding box, which causes an action that will be needed shortly to be downloaded to the client computer so that the action is available when needed. The one or more behavior or action files for a particular object may contain information about the movements of the joints in the object, which correspond to a particular behavior and any other data necessary to execute the behavior. For example, a head nod behavior may involve the movement of the neck joint. As another example, a sound track for the object, such as saying xe2x80x9cHelloxe2x80x9d, may involve the movement of the various pieces of the lips and a sound track synchronized to the movement of the lips.
In accordance with the invention, the total size of each behavior downloaded to the client computer is also relatively small in size so that the download time of the behavior, over a relatively slow communications link, is not too slow. To reduce the size of each behavior, the initial object downloaded to the client computer may include an object tree containing data about each portion of the object. For example, a person would include a leg object. Then, each piece of skin on the object (e.g., each polygon) may include a contribution chart which lists each joint in the object, such as the knee or ankle, and the contributions that the movement of each joint makes to movement of the particular polygon. For example, a polygon near the knee joint would probably be mostly influenced by knee movement while a polygon midway between the knee and ankle would be influenced by the movement of both the ankle and the knee. Thus, when a behavior commands the knee of the object to move, the client computer may easily determine the movement for each particular polygon based on the model of the object and the movement of the joints. Thus, for any downloaded behavior, only the movements of the joints in the object need to be specified in the downloaded behavior file since the movement of each piece of skin on the model may be determined by the model based on the movement of the joints. Thus, if the model has twelve joints and 6000 polygons, the downloaded behavior file may contain data about the movement of the twelve joints whereas the behavior may cause the 6000 polygons on the model to move.
In accordance with the invention, the system also permits a downloaded behavior to be streamed to the player application residing on the user""s computer. In particular, the behavior may start playing on the player application before the entire behavior is downloaded. For example, if a behavior is five minutes long, the user of the player application is not likely to wait 5 minutes for the behavior to be downloaded. Therefore, in accordance with the invention the system downloads a predetermined amount of the behavior(e.g., a two second portion of the behavior data) at a time so that the behavior may start executing the first predetermined portion of the behavior data while the second and subsequent portions of the behavior data are downloaded. Thus, a long behavior being downloaded to the player application does not prevent the animated character""s behavior from being started.
The system may also permit the user to interact with the animated objects in various different ways using actions and scripts which include one or more actions or behaviors. For each interaction with the object, there may be an action or behavior associated with that interaction. For example, when the user clicks on an animated door being displayed to the user, a behavior to open the door and show the door slowly opening with a creaking soundtrack may be downloaded to the client computer and executed. On the client computer, the user may see the door slowly open and hear the door creak as it opens. As another example, when the user drags a cursor over an object, such as a gray knife, a behavior to turn the knife red will be downloaded and executed so that the knife turns red when the user places the cursor over it. When the user moves the cursor off of the knife, the knife returns to its idle behavior which is having a gray color.
To shade the animated object using a lighting model, the invention may use a spherical environmental map. In particular, the pixels resulting from a particular lighting condition is determined for a half-sphere and then the corresponding lighting for an object is determined based on the pixels in the half-sphere. The lighting model for the half-sphere may be downloaded to the client computer so that, for each pixel of the object, the client computer may look up the corresponding point on the half-sphere and apply the pixel value on that portion of the half-sphere to the object. Thus, in accordance with the invention, the system does not attempt to calculate, in real-time, the lighting for an object. The system may also provide a character cache in the client computer that permits the character data to be stored in the client computer so that it does not need to be constantly refreshed. In contrast, in a conventional Web based 3-D system, such as VRML, the character may be stored in the cache of the browser application which is periodically flushed.
Thus, in accordance with the invention, a system for animating a character on a computer is provided, comprising a first computer and a second computer connected to the first computer. The first computer may store one or more pieces of data associated with a particular animated character. The pieces of data may include a persistent data file containing one or more of a geometric model of the animated character, a texture associated with the animated character and a sound associated with the animated character. The pieces of data may further comprise one or more behavior files wherein each behavior file contains data about a particular behavior of the animated character and each behavior specifies the movement of the model. The second computer may initially download the persistent data file from the first computer in order to begin the animation of the animated character on the second computer and then asynchronously download a behavior file from the first computer just prior to the execution of the behavior of the animated character by the second computer.